pygrub tmp files should live in /var/run/ not /var/lib/, as they are
authorkaf24@localhost.localdomain <kaf24@localhost.localdomain>
Sat, 9 Dec 2006 15:04:27 +0000 (15:04 +0000)
committerkaf24@localhost.localdomain <kaf24@localhost.localdomain>
Sat, 9 Dec 2006 15:04:27 +0000 (15:04 +0000)
indeed runtime only.

Also fix a race condition in making the pygrub fifo.

Signed-off-by: John Levon <john.levon@sun.com>
tools/pygrub/Makefile
tools/pygrub/src/pygrub
tools/python/xen/xend/XendBootloader.py

index da75bda4b0142ce299079f6a3659a1d9019671ef..2e7b3e4d210fc0c180b483efd9fa81b6a03bfa23 100644 (file)
@@ -12,11 +12,11 @@ build:
 ifndef XEN_PYTHON_NATIVE_INSTALL
 install: all
        CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py install --home="$(DESTDIR)/usr" --prefix=""
-       $(INSTALL_DIR) -p $(DESTDIR)/var/lib/xen
+       $(INSTALL_DIR) -p $(DESTDIR)/var/run/xend/boot
 else
 install: all
        CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py install --root="$(DESTDIR)"
-       $(INSTALL_DIR) -p $(DESTDIR)/var/lib/xen
+       $(INSTALL_DIR) -p $(DESTDIR)/var/run/xend/boot
 endif
 
 .PHONY: clean
index 64a3662704fe4731fb75ca21108c1697e8b6d478..8fb43ca680730702335dcbf29b5321a8a12bd34d 100644 (file)
@@ -514,14 +514,16 @@ if __name__ == "__main__":
     fs = fsimage.open(file, offset)
 
     kernel = fs.open_file(img.kernel[1],).read()
-    (tfd, fn) = tempfile.mkstemp(prefix="vmlinuz.", dir="/var/lib/xen")
+    (tfd, fn) = tempfile.mkstemp(prefix="boot_kernel.",
+        dir="/var/run/xend/boot")
     os.write(tfd, kernel)
     os.close(tfd)
     sxp = "linux (kernel %s)" %(fn,)
 
     if img.initrd:
         initrd = fs.open_file(img.initrd[1],).read()
-        (tfd, fn) = tempfile.mkstemp(prefix="initrd.", dir="/var/lib/xen")
+        (tfd, fn) = tempfile.mkstemp(prefix="boot_ramdisk.",
+            dir="/var/run/xend/boot")
         os.write(tfd, initrd)
         os.close(tfd)
         sxp += "(ramdisk %s)" %(fn,)
index 879b39806d8877fcf01aeb176386a6722f5d503e..48ebb55e66c6e8e70ff84e93a424fd2ee47858cf 100644 (file)
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 #
 
-import os, select, errno
+import os, select, errno, stat
 import random
 import shlex
 from xen.xend import sxp
 
+from xen.util import mkdir
 from XendLogging import log
 from XendError import VmError
 
@@ -37,11 +38,16 @@ def bootloader(blexec, disk, quiet = 0, blargs = None, imgcfg = None):
         log.error(msg)
         raise VmError(msg)
 
+    mkdir.parents("/var/run/xend/boot/", stat.S_IRWXU)
+
     while True:
-        fifo = "/var/lib/xen/xenbl.%s" % random.randint(0, 32000)
-        if not os.path.exists(fifo):
-            break
-    os.mkfifo(fifo, 0600)
+        fifo = "/var/run/xend/boot/xenbl.%s" %(random.randint(0, 32000),)
+        try:
+            os.mkfifo(fifo, 0600)
+        except OSError, e:
+            if (e.errno != errno.EEXIST):
+                raise
+        break
 
     child = os.fork()
     if (not child):